package edu.uoc.vmerinom.tfc.backup;

import java.text.SimpleDateFormat;
import java.util.List;

import javax.persistence.EntityManager;

import edu.uoc.vmerinom.tfc.domain.Grupo;

public class Grupos {
	@SuppressWarnings("unchecked")
	public static String backup(EntityManager entityManager) {
		StringBuffer backup = new StringBuffer();
		List<Grupo> grupos = entityManager.createQuery("from Grupo order by id").getResultList();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		for (Grupo grupo : grupos) {
			StringBuffer insert = new StringBuffer();
			insert.append("insert into grupos (id, creado, modificado, alta, baja, nombre, tendencia, email, web, facebook, ");
			insert.append("twitter) values (");
			
			insert.append(grupo.getId());
			insert.append(", current_timestamp, current_timestamp, '");
			insert.append(sdf.format(grupo.getAlta()));
			insert.append("', ");
			if (grupo.getBaja() != null) {
				insert.append("'");
				insert.append(sdf.format(grupo.getBaja()));
				insert.append("', '");
			} else {
				insert.append("null, '");
			}
			insert.append(grupo.getNombre());
			insert.append("', ");
			if (grupo.getTendencia() != null) {
				insert.append("'");
				insert.append(grupo.getTendencia());
				insert.append("', ");
			} else {
				insert.append("null, ");
			}
			if (grupo.getEmail() != null) {
				insert.append("'");
				insert.append(grupo.getEmail());
				insert.append("', ");
			} else {
				insert.append("null, ");
			}
			if (grupo.getWeb() != null) {
				insert.append("'");
				insert.append(grupo.getWeb());
				insert.append("', ");
			} else {
				insert.append("null, ");
			}
			if (grupo.getFacebook() != null) {
				insert.append("'");
				insert.append(grupo.getFacebook());
				insert.append("', ");
			} else {
				insert.append("null, ");
			}
			if (grupo.getTwitter() != null) {
				insert.append("'");
				insert.append(grupo.getTwitter());
				insert.append("'");
			} else {
				insert.append("null");
			}
			insert.append(");\n");
			backup.append(insert);
		}
		return backup.toString();
	}
}
